package com.lzh.chatnote.user.dao;

import com.lzh.chatnote.common.enums.CursorEnum;
import com.lzh.chatnote.common.utils.CursorUtils;
import com.lzh.chatnote.common.utils.UserUtils;
import com.lzh.chatnote.user.domain.entity.UserFriend;
import com.lzh.chatnote.common.domian.vo.request.CursorPageBaseReq;
import com.lzh.chatnote.common.domian.vo.response.CursorPageBaseResp;
import com.lzh.chatnote.user.mapper.UserFriendMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author lzh
 * @since 2025-09-29
 */
@Service
public class UserFriendDao extends ServiceImpl<UserFriendMapper, UserFriend>  {

    public CursorPageBaseResp<UserFriend> queryCursorPage(CursorPageBaseReq req) {
//        //构建查询条件
//        LambdaQueryWrapper<UserFriend> lambdaQuery = new LambdaQueryWrapper<>();
//        //查询当前用户的所有好友
//        lambdaQuery.eq(UserFriend::getUid, UserUtils.getCurrentUserId());
//        //拼接游标条件
//        lambdaQuery.lt(UserFriend::getId, req.getCursor());
//        //游标方向
//        lambdaQuery.orderByDesc(UserFriend::getId);
//        //
//        Page<UserFriend> page = page(req.buildPage(), lambdaQuery);
//
//        List<UserFriend> records = page.getRecords();
//
//        //获取下一页游标条件
//        String nextCursor = Optional.ofNullable(CollectionUtils.lastElement(records))
//                .map(UserFriend::getId)
//                .map(String::valueOf)
//                .orElse(null);
//
//        Boolean isLast = records.size() != req.getPageSize();
//
//        return CursorPageBaseResp.buildVO(CursorPageBaseResp.<UserFriend>builder()
//                .isLast(isLast)
//                .cursor(nextCursor)
//                .build(), records);

        return CursorUtils.queryCursorPage(this,req, wrapper -> {
            wrapper.eq(UserFriend::getUid, UserUtils.getCurrentUserId());
            wrapper.lt(UserFriend::getId, req.getCursor());
        }, UserFriend::getId, CursorEnum.DESC);
    }
}
